台灣的特殊位置,使她在夏秋之間常遭受颱風襲擊,但偶爾也會有搞錯季節的晚颱。
詩憶望著窗外灰暗的天空,狂風暴雨絲毫沒有停歇之勢。
週末其他人都不在,於是唯心提議在寢室補課,兩人都沒看天氣預報,不知道天氣會變壞。
唯心冒著風雨提著兩份外帶小火鍋。
門被推開的瞬間,食物的香味就飄滿整間寢室,詩憶嚥下口水。
「有學姐真好。」她真誠的發出感謝之詞。
唯心笑笑,將食物放下,去了一趟洗手間稍微收拾身上被雨淋濕的地方。
她回來寢室時,詩憶已經清理好桌面,也準備好兩副不鏽鋼餐筷。
小火鍋很美味,兩人在心裡感謝店家在颱風天依舊營業的勤奮,狼吞虎嚥解決了午餐。
唯心今天也是另開一個檔案放程式碼。「今天我們來玩加法吧,妳覺得會印出多少?」
fun main() {
val x = 1
val y = 2
val result = x + y
print(result)
}
這是個位數加法,一般大學生都可以心算出結果,小學生也可以用手指一個一個數出來。
詩憶自然也很快回答:「是3。」
「沒錯,妳現在試試把result
加上1?」唯心把筆電還給詩憶。
詩憶想了想,加上一行程式碼。
result = result + 1
詩憶左看看,右看看剛加上的程式碼,又回頭看看學姐。
「妳是不是覺得很想把兩邊的result
一起拿掉?」唯心一口道破她的想法。「這是國高中方程式求解帶來的習慣,在程式碼裡,等號只有一個的時候,不是數學的相等,而是賦予新價值的動作——令新的result
是原本result
的值加一。」
詩憶放心了,點擊綠色三角形跑程式,結果出現紅字錯誤。「咦?」她又試了幾次,還是一樣的結果。
「因為result
現在是val
的狀態啊,不能重新賦予價值。錯誤訊息也是這樣說的。」
「那要怎麼改?」聽了唯心的話,詩憶沮喪地垂下肩膀。
唯心沒有開口回答,但她把游標移動到發生錯誤的那行程式碼,讓IDE浮出了提示框。
詩憶照著IDE提示框的建議,把val
改成了var
。
fun main() {
val x = 1
val y = 2
var result = x + y
result = result + 1
print(result)
}
程式這次順利跑出4的結果。
唯心拍拍詩憶的肩膀。「做得好,如果需要重新賦值,就使用var
,反之就是val
。刻意分成兩種賦值待遇,是因為不能重寫,就代表始終如一。在程式邏輯上有時會利用到這個特性,比如考卷交出去再拿回來修改就是不合理的。IDE時刻檢查程式碼的語法和合理性,有錯誤就會像這樣在行下面顯示紅色鋸齒線,不用等妳按綠色三角形跑程式才發現問題。」
詩憶點頭表示了解。
「對了,有個地方要注意,即使var
可以重新賦值,也不是沒有限制的唷。」程式碼在唯心的改動下再次出現紅色鋸齒底線。
「是因為剛剛是數字,現在是文字嗎?」詩憶猜測。
唯心點頭。「是的。在程式中不同型態的變數在記憶體分配的方式不同,強硬的將變數改變型態會發生問題。」